package com.evil.kingdom.service.action;

import com.evil.kingdom.pojo.entity.action.Vector;
import com.evil.kingdom.pojo.entity.world.city.City;
import com.evil.common.mongo.service.SingleService;
import jakarta.validation.constraints.NotBlank;

import java.util.List;
import java.util.Optional;

/**
 * 导航本
 *
 * @author liyang
 * @date 2024-05-22 16:51
 */
public interface VectorService extends SingleService<Vector> {

    /**
     * 根据出发地、目的地获取导航本
     *
     * @param departName 出发地名称
     * @param destName   目的地名称
     * @return Optional
     */
    Optional<Vector> isExistByCity(@NotBlank(message = "导航本出发地名称不能为空") String departName, @NotBlank(message = "导航本目的地名称不能为空") String destName);

    /**
     * 根据出发地、目的地获取导航本
     *
     * @param departName 出发地名称
     * @param destName   目的地名称
     * @return Vector
     */
    Vector findByCity(@NotBlank(message = "导航本出发地名称不能为空") String departName, @NotBlank(message = "导航本目的地名称不能为空") String destName);

    /**
     * 获取导航本列表
     *
     * @return 城市列表
     */
    List<Vector> list();

    /**
     * 根据城市更新导航本
     *
     * @param city city
     * @return 已更新导航本列表
     */
    List<Vector> updateByCity(City city);
}
